API reference / Payment methods
Save a payment method
/v1/payment-methods Saves a customer's card for later charges with no payer present (auto-debit, subscriptions). Send your customer to next_action.checkout_url: Weav's save page, where they type their card, agree to future charges and confirm it with their bank (3DS). Their bank may show a ₱10.00 check that is canceled right after. The card goes from their browser to the card processor; it never reaches Weav or you.
You get PAYMENT_METHOD_SAVED (now ACTIVE: charge it with POST /v1/payments and its payment_method_id) or PAYMENT_METHOD_FAILED. A link not used within 24 hours fails. Only cards today (type: CARD).
Saving cards is off until Weav turns it on for your account with your PCI DSS evidence (422 4220401); in test mode it always works, with a test save page.
Headers
AuthorizationstringRequiredBearerplus your API key. See Authentication.
Body
JSON, with Content-Type: application/json.
typestringRequiredOne of:CARDcustomerobjectRequired3 fields in
customeridstringRequiredYour own ID for the customer. List their saved methods with it.Up to 64 charactersPattern: ^[A-Za-z0-9._:@-]+$namestring | nullWeav's save page asks your customer when you leave it out.Up to 255 charactersemailstring (email) | nullUp to 255 characters
success_urlstring (uri) | nullHTTPS. Where your customer goes once it's saved.Up to 2048 characterscancel_urlstring (uri) | nullHTTPS. Where your customer goes if they leave, or the bank's check fails.Up to 2048 characterswebhook_urlstring | nullThis payment method's webhooks go here instead of your webhook URL.Up to 2048 characters
Responses
201 Created
Payment method created (code 2010400).
What data holds
payment_methodobject16 fields in
payment_methodidstringtypestringOne of:CARDstatusstringPENDINGuntil your customer saves it and their bank confirms it;ACTIVE(chargeable);FAILEDwhen that never happens;REMOVED.One of:PENDINGACTIVEFAILEDREMOVEDcustomerobject3 fields in
customeridstringnamestring | nullemailstring | null
cardobject | nullOnce saved. Never the card number.4 fields in
cardbrandstringFrom the card processor.One of:VISAMASTERCARDJCBlast4stringexp_monthinteger | nullThe expiry month your customer typed. Ask them for a new card before it passes (expires_byon the list).At least 1At most 12exp_yearinteger | nullFour digits.
labelstring | nullTo show your customer.next_actionobject2 fields in
next_actiontypestring | nullOne of:REDIRECTcheckout_urlstring (uri) | nullWeav's save page, whilePENDING.
success_urlstring (uri) | nullcancel_urlstring (uri) | nullwebhook_urlstring | nullexpires_atstring (date-time) | nullWhen the save link ends, whilePENDING.activated_atstring (date-time) | nullfailed_atstring (date-time) | nullremoved_atstring (date-time) | nullcreated_atstring (date-time)updated_atstring (date-time)
401 Unauthorized
Missing, malformed or unknown API key (code 4010000).
403 Forbidden
The key can't make this request (code 4030000): an address outside the key's IP allowlist, a live key before your live mode is on, or an account that isn't active. A live key sent from a browser is refused (code 4030001): keep live keys on your server.
422 Unprocessable Content
Invalid fields, or saving cards is off for your account (4220401).