How you pay for a plan
Passpayment_method on quote, subscribe and renew. It defaults to wallet.
To pay for a single period by card, subscribe by card and then turn off auto-renew. The card isn’t charged again, and the plan ends at the end of the period unless you renew it.
GET /business/subscription returns payment_options: each method with a label, a description to show your users, available and unavailable_reason. Plans with custom negotiated pricing can only be paid from the USD balance.
When a renewal isn’t paid, the plan stays active for a grace period. Pay before grace_ends_at (by wallet or card) to keep it. Otherwise the account moves to its fallback plan, usually the free plan.
Endpoints
Get your current plan
An account with no plan is put on the free plan the first time it calls this endpoint.
List plans
Response
change_typesays what choosing the plan would do:new,renew,upgrade(takes effect now) ordowngrade(takes effect at the end of the paid period).is_custom: truemarks a plan built for your account with negotiated pricing. Only you see it.contact_sales: trueplans haveprice: nulland can’t be bought through the API. Contact your account manager.- A feature
limitof-1means unlimited.
Get a quote
See what a plan change costs before you make it.Response
credit) and you pay amount_due. Card upgrades charge the full price, so credit is 0. A downgrade returns effective: "period_end" and amount_due: 0.
Subscribe, upgrade or downgrade
data.action says what happened:
Pay a plan by card
1
Start the checkout
Call
subscribe (or renew for the current plan) with payment_method: "card" and send the user to data.checkout_url. The link opens the secure card payment page.2
The user pays
After paying, the user is sent back to Settings → Billing in the dashboard.
3
Confirm the plan
Read
GET /business/subscription until billing_method is card and plan.id is the plan you chose. This usually takes a few seconds. Plan payments show as pending in GET /business/subscription/payments until then.subscribe with card again for the same plan returns the open link while it’s still valid. When a card renewal fails, status becomes past_due: renew with card for a new checkout, or with wallet.
Renew now
Pay for the current plan straight away: renew early (the new period starts when the current one ends) or settle apast_due or overdue plan.
action: "renewed" for wallet, or action: "checkout" with a checkout_url for card. Free plans renew by themselves, so renewing one returns an error.
Cancel, resume and auto-renew
- Cancel:
reasonis optional. The plan stays active untilcurrent_period_end, then the account moves to the free plan. Nothing more is charged, andcancel_at_period_endbecomestrue. - Resume:
POST /business/subscription/resumeturns renewal back on and drops a scheduled downgrade. It only works before the period ends. - Auto-renew:
PUT /business/subscription/auto-renewwith{ "auto_renew": false }. For USD balance billing, the plan then isn’t renewed automatically; renew it yourself before it ends. For card billing it’s the same as cancel and resume.
Payment and plan history
data and the page is in pagination (current_page, last_page, per_page, total). Each payment has id, status (succeeded, failed, pending or refunded), method, amount, currency, plan, invoice_number, period_start, period_end, failure_reason, paid_at and created_at.
Each history entry has a type, from_plan, to_plan, by (You, Yativo or Automatic) and created_at. type is one of started, subscribed, upgraded, renewed, assigned, change_scheduled, cancel_scheduled, resumed, past_due, recovered, overdue, downgraded, ended, fallback, invoice_paid, extended, auto_renew_on or auto_renew_off.
The account owner is emailed when a plan activates or renews, a few days before a renewal, when a renewal fails, when a plan becomes overdue or is downgraded, and when a cancellation or downgrade is scheduled.
Service fees
Some services are billed separately from your plan: account maintenance and the annual verification (KYC/KYB) review. Each charge is a bill. Bills aren’t transactions and never appear in your transaction history. Yativo collects outstanding bills from your USD balance when it covers them. You can also pay them by card.Outstanding bills
Response
typeismaintenanceorkyc_annual.statusispending,partially_paid,processing,paid,failed(a collection attempt failed) orcancelled. Outstanding bills are the ones inpending,partially_paid,processingorfailedwith anoutstanding_amountabove0.GET /business/billing/historytakes optionalstatus,typeandper_page(up to 100) filters and returnsbillswith apaginationobject.line_itemsshow each charged account or service with itsdescription,service_type,account_number,customer_idand amounts.paymentsshow each collection with itspayment_method(wallet or card),amount,status,collected_atandfailure_reason.
Pay bills by card
1
Start a card payment
Send the IDs of the bills to pay (1 to 50). The payment covers their full outstanding balance.
Response
2
Send the user to checkout_url
The user pays on the secure card payment page and is sent back to Settings → Billing in the dashboard. Keep the
reference: the return doesn’t include it.3
Confirm the payment
Read
GET /business/billing/card-payments/{reference} until status is succeeded. A bill only counts as paid once its card payment has succeeded.
The link expires after
expires_at, 60 minutes by default. Starting a card payment again for the same bills while one is open returns the open one.
Errors
Plan and billing errors return422 with a message you can show the user. See Error response format for the full response.
Older plan endpoints
GET /business/plans/current, GET /business/plans/all, POST /business/plans/subscribe/{plan_id} and PUT /business/plans/upgrade/{plan_id} still work and follow the same rules: USD balance by default, or pass payment_method: "card" to get a checkout_url. Use the /business/subscription endpoints for new work.
