Generated using rake test
with EXTRAINFO=md
- Api/Balance Histories Controller
- Api/Home Controller
- Api/Invite Codes Controller
- Api/Payment Methods Controller
- Api/Sessions Controller
- Api/Transactions Controller
- Create Failed For Not Invited User
- Create Using Pin
- Create Using Email
- Create Using Nearby Users
- Create Using Phone
- Index
- Index Paginated
- Show When Locked
- Show With Pin And Location
- Show With Wrong Pin Locked
- Show With Wrong Location
- Show With Wrong Location Last Chance
- Update With Pin, Location And Initials
- Update With Invalid Initials
- Update With Spreedly Failure
- Api/Users Controller
- Create
- Create With Preapproved Email
- Create With Short Password Failed
- Create Without Phone Failed
- Forgot Password
- Forgot Password With Non Existant Email Failed
- Nearby Users
- Nearby Users With Large Radius
- Nearby Users With Small Radius
- Send Email Confirmation
- Show
- Update Password
- Update Password With Invalid Current Password Failed
- Update Phone To Existing Number Failed
- Update Without Change In Password
- Verify Phone Number Confirm
- Verify Phone Number Confirm Later Than 30 Minutes Failed
- Verify Phone Number For Logged In User
- Verify Phone Number Request
- Verify Phone Number Request For Existing Number Failed
- Verify Phone Number With Invalid Uid Failed
- Api/Withdrawals Controller
Get all user's balance histories.
Paginated by default even if params page not specified, per_page default to 25
amountable_type values :
Transaction
SpreedlyTransaction
Withdrawal
amountable.transaction_type values (only for amountable_type = Transaction) :
by_pin, by_nearby_user, by_email, by_text, undefined
Validations:
auth_token: required
/api/balance_histories
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
{"balance_histories"=>
[{"amountable"=>
{"uid"=>"user1transaction1dummyuid",
"transaction_number"=>111382556,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"pending",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"created_at"=>1415024573,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"},
"amountable_type"=>"Transaction",
"amount"=>
{"fractional"=>-123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"notes"=>"Test only",
"created_at"=>1415024573},
{"amountable"=>
{"uid"=>"user1transaction2dummyuid",
"transaction_number"=>531284392,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"confirmed",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>234.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"created_at"=>1415024633,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"},
"amountable_type"=>"Transaction",
"amount"=>
{"fractional"=>-234.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"notes"=>"Test only",
"created_at"=>1415024573},
{"amountable"=>
{"uid"=>"user1withdrawal1dummyuid",
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"last_four_digits"=>nil,
"card_type"=>nil,
"state"=>"pending",
"created_at"=>1415024573},
"amountable_type"=>"Withdrawal",
"amount"=>
{"fractional"=>-123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"notes"=>"Test only",
"created_at"=>1415024573},
{"amountable"=>
{"id"=>201079553,
"user_id"=>206669143,
"amount_cents"=>123,
"amount_currency"=>"USD",
"created_at"=>"2014-11-03T14:22:53.000Z",
"updated_at"=>"2014-11-03T14:22:53.000Z"},
"amountable_type"=>"SpreedlyTransaction",
"amount"=>
{"fractional"=>-123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"notes"=>"Test only",
"created_at"=>1415024573}]}
Send feedback to support@silouet.com.
Validations:
auth_token: required
subject: required
message: required
/api/feedback
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"message"=>"Btw newline is OK..\n\nSuch bend, Many viral, Wow!",
"subject"=>"It's bend!"}
/api/feedback
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"message"=>"no subject? why?",
"subject"=>""}
{"error"=>"Subject and message required."}
Request invite code.
Validations:
auth_token: required
/api/invite_codes
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
Enter invite code.
Validations:
auth_token: required
code: required
/api/invite_codes/update
{"auth_token"=>"user3dummyuid.user3dummyauthtoken", "code"=>"ponnies!"}
/api/invite_codes/update
{"auth_token"=>"user3dummyuid.user3dummyauthtoken", "code"=>"dragon!"}
Create new payment method.
Validations:
auth_token: required
token: required, unretained payment method token
/api/payment_methods
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"payment_method"=>{"token"=>"testvalidtoken"}}
{"payment_method"=>
{"uid"=>"fcaa6923-1117-4f07-918c-a85bc8222211",
"first_name"=>"Perrin",
"last_four_digits"=>"4444",
"card_type"=>"master"}}
/api/payment_methods
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"payment_method"=>{"token"=>"testinvalidtoken"}}
{"errors"=>
{"token"=>
["The payment method has been redacted. Therefore, it cannot be retained."]},
"payment_method"=>
{"uid"=>nil, "first_name"=>nil, "last_four_digits"=>nil, "card_type"=>nil}}
Delete user's payment method.
Validations:
auth_token: required
id: required, payment method uid
/api/payment_methods/user1pm2dummyuid
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
Get all user's payment methods.
Validations:
auth_token: required
/api/payment_methods
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
{"payment_methods"=>
[{"uid"=>"user1pm1dummyuid",
"first_name"=>"user1first_name",
"last_four_digits"=>"1111",
"card_type"=>"visa"},
{"uid"=>"user1pm2dummyuid",
"first_name"=>"user1first_name",
"last_four_digits"=>"1111",
"card_type"=>"master"}]}
Log user in.
Return auth_token, combine user's uid and auth_token with dot (uid.auth_token) for further request auth_token
Validations:
user[email]: required
user[password]: required
/api/sign_in
{"user"=>{"email"=>"user1@email.test", "password"=>"testpassword"}}
{"user"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1",
"first_name"=>"Dummy User",
"last_name"=>"1",
"phone"=>"123-123-1234-1",
"email"=>"user1@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>true,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"auth_token"=>"jKHmzfagA1eVuzxDM9hx"}}
/api/sign_in
{"user"=>{"email"=>"user1@email.test", "password"=>"wrongpassword"}}
{"error"=>"Invalid email or password."}
Log user out, remove active auth_token.
Will log user out of all devices, don't use this endpoint if you need only 1 device logout.
Validations:
auth_token: required
/api/sign_out
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
/api/sign_out
{"auth_token"=>"user1dummyuid.invalidtoken"}
/api/sign_out
{"auth_token"=>"user1dummyuid."}
/api/transactions
{"auth_token"=>"user3dummyuid.user3dummyauthtoken",
"transaction"=>
{"amount_cents"=>"1200",
"initials"=>"AH",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234",
"sender_privacy"=>"anonymous"}}
{"error"=>"You need to enter invite code before continuing"}
Create new transaction using PIN and initials.
Validations:
auth_token: required
initials: required, max 2 chars
pin: required, max 10 chars
lat: required, current latitude of payer
lng: required, current longitude of payer
amount_cents: required, greater than 0, transaction amount in cents
sender_privacy: required, one of anonymous, pixelated, visible
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"transaction"=>
{"amount_cents"=>"1200",
"initials"=>"AH",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234",
"sender_privacy"=>"anonymous"}}
{"transaction"=>
{"uid"=>"0225ea97-fca1-4c42-8c24-86fdb7aa1714",
"transaction_number"=>531284393,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"pending",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>1200.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415025176,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"}}
Create new transaction using email.
"recipient_name" is optional and will be used instead of email if specified
Validations:
auth_token: required
recipient_email: required
amount_cents: required, greater than 0, transaction amount in cents
sender_privacy: required, one of anonymous, pixelated, visible
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"transaction"=>
{"amount_cents"=>"1400",
"recipient_email"=>"user2@email.test",
"recipient_name"=>"Dummy User 2",
"sender_privacy"=>"visible"}}
{"transaction"=>
{"uid"=>"177005a3-0416-4707-b691-2530e3236354",
"transaction_number"=>531284394,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"visible"},
"recipient"=>
{"email"=>"user2@email.test", "phone"=>nil, "name"=>"Dummy User 2"},
"state"=>"pending",
"transaction_type"=>"by_email",
"amount"=>
{"fractional"=>1400.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415025176,
"lat"=>nil,
"lng"=>nil,
"initials"=>nil}}
Create new transaction using recipient_uid (from nearby_users).
Validations:
auth_token: required
recipient_uid: required
amount_cents: required, greater than 0, transaction amount in cents
sender_privacy: required, one of anonymous, pixelated, visible
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"transaction"=>
{"amount_cents"=>"1300",
"recipient_uid"=>"user2dummyuid",
"sender_privacy"=>"pixelated"}}
{"transaction"=>
{"uid"=>"1f1727ce-654d-4ab2-b14b-7d76e68f9570",
"transaction_number"=>531284395,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"pixelated"},
"recipient"=>
{"uid"=>"user2dummyuid",
"name"=>"Dummy User 2.",
"first_name"=>"Dummy User",
"last_name"=>"2.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>37.792,
"lng"=>-122.393,
"email"=>"user2@email.test",
"phone"=>"123-123-1234-2"},
"state"=>"pending",
"transaction_type"=>"by_nearby_user",
"amount"=>
{"fractional"=>1300.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415025176,
"lat"=>nil,
"lng"=>nil,
"initials"=>nil}}
Create new transaction using phone.
"recipient_name" is optional and will be used instead of phone if specified
Validations:
auth_token: required
recipient_phone: required
amount_cents: required, greater than 0, transaction amount in cents
sender_privacy: required, one of anonymous, pixelated, visible
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"transaction"=>
{"amount_cents"=>"1450",
"recipient_phone"=>"123-123-1234-2",
"sender_privacy"=>"visible"}}
{"transaction"=>
{"uid"=>"95951a6c-83b8-4d74-bd9d-31c4fb650b1a",
"transaction_number"=>531284396,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"visible"},
"recipient"=>{"email"=>nil, "phone"=>"123-123-1234-2", "name"=>nil},
"state"=>"pending",
"transaction_type"=>"by_text",
"amount"=>
{"fractional"=>1450.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415025176,
"lat"=>nil,
"lng"=>nil,
"initials"=>nil}}
Get all user's transactions.
Validations:
auth_token: required
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
{"transactions"=>
[{"uid"=>"user1transaction2dummyuid",
"transaction_number"=>531284392,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"confirmed",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>234.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415024633,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"},
{"uid"=>"user1transaction1dummyuid",
"transaction_number"=>111382556,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"pending",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415024573,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"}]}
Get all user's transactions paginated.
Parameters:
page: integer, page number start from 1
per_page: number of items in 1 page, default to 25 if unspecified
/api/transactions
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"page"=>"2",
"per_page"=>"1"}
{"transactions"=>
[{"uid"=>"user1transaction1dummyuid",
"transaction_number"=>111382556,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>nil,
"state"=>"pending",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>true,
"created_at"=>1415024573,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"}]}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"error"=>"You're locked for about 1 hour. Contact support for help.",
"locked_at"=>1415025176}
Find transaction using PIN and location within 100 meters.
Validations:
auth_token: required
pin: required, max 10 chars
lat: required, latitude of payer
lng: required, longitude of payer
Responses:
200: transaction found, proceed to update to accept
404: transaction not found, wrong pin and lat, lng combination
422: user locked, wait until locked_at time to retry
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"transaction"=>
{"transaction_number"=>111382556,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>
{"uid"=>"user2dummyuid",
"name"=>"Dummy User 2.",
"first_name"=>"Dummy User",
"last_name"=>"2.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>37.792,
"lng"=>-122.393,
"email"=>"user2@email.test",
"phone"=>"123-123-1234-2"},
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>false}}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"wrong"}
{"error"=>"You're now locked for 1 hours. Contact support for help.",
"attempts"=>3,
"max_attempts"=>3}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"lat"=>"54.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"error"=>
"Oops, the PIN or location doesn't match payments. Check your PIN code and location or get help from our support team.",
"attempts"=>1,
"max_attempts"=>3}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"lat"=>"54.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"error"=>
"You will get locked out for 1 hours after another failed attempt so please contact support if you need help.",
"attempts"=>2,
"max_attempts"=>3}
Confirm a transaction using PIN, location and initials.
Validations:
auth_token: required
initials: required, max 2 chars
pin: required, max 10 chars
lat: required, current latitude of payer
lng: required, current longitude of payer
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"initials"=>"AH",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"transaction"=>
{"uid"=>"user1transaction1dummyuid",
"transaction_number"=>111382556,
"sender"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1.",
"first_name"=>"Dummy User",
"last_name"=>"1.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>nil,
"lng"=>nil,
"sender_privacy"=>"anonymous"},
"recipient"=>
{"uid"=>"user2dummyuid",
"name"=>"Dummy User 2.",
"first_name"=>"Dummy User",
"last_name"=>"2.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>37.792,
"lng"=>-122.393,
"email"=>"user2@email.test",
"phone"=>"123-123-1234-2"},
"state"=>"confirmed",
"transaction_type"=>"by_pin",
"amount"=>
{"fractional"=>123.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"is_mine"=>false,
"created_at"=>1415024573,
"lat"=>44.968046,
"lng"=>-94.420307,
"initials"=>"AH"}}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"initials"=>"HA",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"error"=>"Invalid initials."}
/api/transactions/find
{"auth_token"=>"user2dummyuid.user2dummyauthtoken",
"initials"=>"AH",
"lat"=>"44.968046",
"lng"=>"-94.420307",
"pin"=>"1234"}
{"error"=>"Validation failed: Unable to process the purchase transaction."}
Sign-up user.
Validations:
email: required, unique
password: required, min 8 chars, equal to "password_confirmation" if supplied
phone_confirmation_uid: required, from "verify_phone_number" endpoint
/api/sign_up
{"user"=>
{"email"=>"valid@email.test",
"first_name"=>"Aya",
"last_name"=>"Hirano",
"password"=>"8chars!!",
"phone_confirmation_uid"=>"phone_confirmation-confirmed_uid",
"photo"=>"#<ActionDispatch::Http::UploadedFile:0x007fe8431b1470>",
"pixelated_photo"=>
"#<ActionDispatch::Http::UploadedFile:0x007fe8431b9788>"}}
{"user"=>
{"uid"=>"cf084fed-8296-45a9-ad8c-e8c09c77c4ac",
"name"=>"Aya Hirano",
"first_name"=>"Aya",
"last_name"=>"Hirano",
"phone"=>"12345678",
"email"=>"valid@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"/uploads/user/photo/1010528734/1.jpg",
"thumb"=>{"url"=>"/uploads/user/photo/1010528734/thumb_1.jpg"}},
"pixelated_photo"=>
{"url"=>"/uploads/user/pixelated_photo/1010528734/2.jpg",
"thumb"=>{"url"=>"/uploads/user/pixelated_photo/1010528734/thumb_2.jpg"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>false,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"auth_token"=>nil}}
Sign-up user with preapproved email domain (for example findandform.com).
/api/sign_up
{"user"=>
{"email"=>"mr.bubbla@findandform.com",
"first_name"=>"Mr",
"last_name"=>"Bubbla",
"password"=>"8chars!!",
"phone_confirmation_uid"=>"phone_confirmation-confirmed_uid"}}
{"user"=>
{"uid"=>"d4011408-5767-45b5-9fac-c18ee079a0ee",
"name"=>"Mr Bubbla",
"first_name"=>"Mr",
"last_name"=>"Bubbla",
"phone"=>"12345678",
"email"=>"mr.bubbla@findandform.com",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>true,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"auth_token"=>nil}}
/api/sign_up
{"user"=>
{"email"=>"valid@email.test",
"name"=>"Aya Hirano",
"password"=>"no8char",
"phone_confirmation_uid"=>"phone_confirmation-confirmed_uid"}}
{"errors"=>{"password"=>["is too short (minimum is 8 characters)"]},
"user"=>
{"uid"=>nil,
"name"=>"Aya Hirano",
"first_name"=>"Aya",
"last_name"=>"Hirano",
"phone"=>"12345678",
"email"=>"valid@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>false,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"auth_token"=>nil}}
/api/sign_up
{"user"=>
{"email"=>"valid@email.test", "name"=>"Aya Hirano", "password"=>"8chars!!"}}
{"errors"=>{"phone"=>["can't be blank"]},
"user"=>
{"uid"=>nil,
"name"=>"Aya Hirano",
"first_name"=>"Aya",
"last_name"=>"Hirano",
"phone"=>nil,
"email"=>"valid@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>false,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"auth_token"=>nil}}
Request password reset for user.
Send instruction email if user with the email existed, ignore invalid email.
/api/forgot_password
{"user"=>{"email"=>"user1@email.test"}}
Request password reset for user.
This is a sample for non-existant email, no error returned to partially prevent user enumeration.
https://www.owasp.org/index.php/Testing_for_user_enumeration_(OWASP-AT-002)
/api/forgot_password
{"user"=>{"email"=>"non_existant@email.test"}}
Get nearby users in default 1000 meters radius.
Validations:
auth_token: required
/api/nearby_users
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
{"nearby_users"=>
[{"uid"=>"user2dummyuid",
"name"=>"Dummy User 2.",
"first_name"=>"Dummy User",
"last_name"=>"2.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>37.792,
"lng"=>-122.393}]}
/api/nearby_users
{"auth_token"=>"user1dummyuid.user1dummyauthtoken", "radius"=>"100000"}
{"nearby_users"=>
[{"uid"=>"user2dummyuid",
"name"=>"Dummy User 2.",
"first_name"=>"Dummy User",
"last_name"=>"2.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>37.792,
"lng"=>-122.393},
{"uid"=>"user3dummyuid",
"name"=>"Dummy User 3.",
"first_name"=>"Dummy User",
"last_name"=>"3.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>44.968046,
"lng"=>-94.420307},
{"uid"=>"user4dummyuid",
"name"=>"Dummy User 4.",
"first_name"=>"Dummy User",
"last_name"=>"4.",
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"lat"=>32.91663,
"lng"=>-96.982841}]}
Get nearby users in specified radius (in meters).
Validations:
auth_token: required
/api/nearby_users
{"auth_token"=>"user1dummyuid.user1dummyauthtoken", "radius"=>"0.1"}
{"nearby_users"=>[]}
Send / re-send email confirmation.
Behave the same as forgot password that it will always return 200 even if the email don't exists / already confirmed.
/api/send_email_confirmation
{"user"=>{"email"=>"user4@email.test"}}
Get user attributes.
Validations:
auth_token: required
/api/profile
{"auth_token"=>"user1dummyuid.user1dummyauthtoken"}
{"user"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1",
"first_name"=>"Dummy User",
"last_name"=>"1",
"phone"=>"123-123-1234-1",
"email"=>"user1@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>true,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}}}}
Update user password.
Validations:
auth_token: required
user[current_password]: required
/api/profile
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"user"=>{"current_password"=>"testpassword", "password"=>"validnewpassword"}}
{"user"=>
{"uid"=>"user1dummyuid",
"name"=>"Dummy User 1",
"first_name"=>"Dummy User",
"last_name"=>"1",
"phone"=>"123-123-1234-1",
"email"=>"user1@email.test",
"unconfirmed_email"=>nil,
"photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"pixelated_photo"=>
{"url"=>"http://website.com/assets/default_photo.png",
"thumb"=>{"url"=>"http://website.com/assets/default_photo.png"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>nil,
"lat"=>nil,
"lng"=>nil,
"is_approved"=>true,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}}}}
/api/profile
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"user"=>{"current_password"=>"wrongpassword", "password"=>"validnewpassword"}}
{"errors"=>{"current_password"=>["is invalid"]}}
/api/profile
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"user"=>{"phone"=>"123-123-1234-2"}}
{"errors"=>{"number"=>["has already been taken"]}}
Update user attributes except for password.
Phone update won't take effect immediately and until confirmed using token from sms see "verify_phone_number" endpoint.
Validations:
auth_token: required
/api/profile
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"user"=>
{"email"=>"valid@email.test",
"lat"=>"37.792",
"lng"=>"-94.420307",
"name"=>"Aya Hirano",
"phone"=>"12345678",
"photo"=>"#<ActionDispatch::Http::UploadedFile:0x007fe8426904d8>",
"pixelated_photo"=>
"#<ActionDispatch::Http::UploadedFile:0x007fe842694e48>"}}
{"user"=>
{"uid"=>"user1dummyuid",
"name"=>"Aya Hirano",
"first_name"=>"Aya",
"last_name"=>"Hirano",
"phone"=>"123-123-1234-1",
"email"=>"user1@email.test",
"unconfirmed_email"=>"valid@email.test",
"photo"=>
{"url"=>"/uploads/user/photo/206669143/2.jpg",
"thumb"=>{"url"=>"/uploads/user/photo/206669143/thumb_2.jpg"}},
"pixelated_photo"=>
{"url"=>"/uploads/user/pixelated_photo/206669143/1.jpg",
"thumb"=>{"url"=>"/uploads/user/pixelated_photo/206669143/thumb_1.jpg"}},
"phone_confirmed_at"=>nil,
"pending_phone"=>"12345678",
"lat"=>37.792,
"lng"=>-94.420307,
"is_approved"=>true,
"balance"=>
{"fractional"=>0.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}}}}
Confirm phone number with token received from sms for non-logged-in user.
Validations:
id: required, "phone_confirmation_uid", can be omitted if "../verify_phone_number/[phone_confirmation_uid]" used
token: required
/api/verify_phone_number
{"id"=>"phone_confirmation-sent_uid", "token"=>"phone_confirmation-sent_token"}
/api/verify_phone_number
{"id"=>"phone_confirmation-sent_uid", "token"=>"phone_confirmation-sent_token"}
Confirm phone number with token received from sms for logged-in user.
Validations:
auth_token: required
token: required
/api/verify_phone_number
{"auth_token"=>"user1dummyuid.user1dummyauthtoken", "token"=>"B64EC0"}
Request phone number confirmation, send sms with token if phone number valid.
Return "phone_confirmation_uid" to be used for confirming the number
Validations:
phone: required
/api/verify_phone_number
{"phone"=>"+15558675309"}
{"phone_confirmation_uid"=>"af9b518f-e0e1-4b82-be4e-9c16a9fb773e"}
/api/verify_phone_number
{"phone"=>"123-123-1234-2"}
/api/verify_phone_number
{"id"=>"thatwatmoment", "token"=>"phone_confirmation-sent_token"}
Create new withdrawal
Validations:
auth_token: required
payment_method_uid: required
amount_cents: required, greater than 100
/api/withdrawals
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"withdrawal"=>
{"amount_cents"=>"100", "payment_method_uid"=>"user1pm2dummyuid"}}
{"withdrawal"=>
{"uid"=>"00d35dc5-e27c-4831-bd4a-50e8b4dfde06",
"amount"=>
{"fractional"=>100.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"last_four_digits"=>"1111",
"card_type"=>"master",
"state"=>"pending",
"created_at"=>1415025174}}
/api/withdrawals
{"auth_token"=>"user1dummyuid.user1dummyauthtoken",
"withdrawal"=>
{"amount_cents"=>"100", "payment_method_uid"=>"user1pm2dummyuid"}}
{"errors"=>{"amount_cents"=>["must be less than or equal to 99"]},
"withdrawal"=>
{"uid"=>nil,
"amount"=>
{"fractional"=>100.0,
"currency"=>
{"id"=>"usd",
"priority"=>1,
"iso_code"=>"USD",
"name"=>"United States Dollar",
"symbol"=>"$",
"alternate_symbols"=>["US$"],
"subunit"=>"Cent",
"subunit_to_unit"=>100,
"symbol_first"=>true,
"html_entity"=>"$",
"decimal_mark"=>".",
"thousands_separator"=>",",
"iso_numeric"=>"840"},
"bank"=>{"rounding_method"=>nil, "rates"=>{}, "mutex"=>{}}},
"last_four_digits"=>"1111",
"card_type"=>"master",
"state"=>"pending",
"created_at"=>nil}}