Reap-Version, described in Versioning & Compatibility.
Funds can be withdrawn from an account to an external address
You can move tokens out of a User-Funded account’s wallet to any address you name. Initiate crypto withdrawal reserves the funds and opens a signature window. The wallet owner signs a payload from Mint signing payload, and you hand the signature to Submit withdrawal signature. Reap covers the network fee and charges a flat fee per chain, taken out of the amount you request.Subscribe toCRYPTO_WITHDRAWAL_CREATED and
CRYPTO_WITHDRAWAL_STATUS_UPDATED to follow one
to completion. You can also read one with
Get crypto withdrawal, or
cancel one that is still waiting for a
signature. Withdrawals appear in the activity feed.See Withdrawing Funds.Account assets report what can be withdrawn per chain
Each chain in the assets endpoint now reportswithdrawable, the largest amount you can request on that chain, and withdrawalFee, what a
withdrawal there costs. Outstanding card spend is already netted out of withdrawable, so you can
show a user a figure they can act on.See The withdrawable cap.Account ownership is chosen per account
Create account accepts an optionalownerType
(USER or COMPANY). It defaults to USER when omitted. Company-owned accounts are only
available in corporate programs and return 400 COMPANY_ACCOUNT_NOT_ALLOWED in consumer
programs. Account ownership is no longer a project-level setting.See Program Mode and Accounts.Deleting a user deletes their cards
Delete user deletes every card the user holds, instead of just blocking them. Deletion is permanent. The user’s accounts stay open, since they can still hold value or card debt to settle.Creating a user no longer needs terms acceptance
Create user no longer accepts or requirestermsAcceptance. Drop the field from any request that still sends it.Card shipment status can be simulated in sandbox
Simulate shipment status drives a submitted shipment through production and delivery in sandbox. Watch the change arrive throughCARD_SHIPMENT_STATUS_UPDATED.- Shipping covers card production and delivery tracking
Fiat deposit simulation takes the currency you send, not a conversion pair
Simulating a fiat deposit now takes a requiredcurrency, the currency of the simulated transfer.
It replaces the optional originalAmount and originalCurrency that previously simulated a
converted transfer.The currency must be the one your card program bills in. Any other is rejected with
SIMULATION_UNSUPPORTED_CURRENCY, which lists the currencies the project accepts. A sandbox call
that still sends originalAmount or originalCurrency now fails validation.- Simulate a fiat deposit takes a required
currencyin place oforiginalAmountandoriginalCurrency - Bank transfers covers the deposit flow
Deposit addresses name the assets they accept
Each deposit address now names the assets it accepts. Each item uses the samesymbol, name,
decimals, and logoUri fields used elsewhere for asset metadata, plus the assetId to deposit
against.A deposit of anything else fails with ASSET_NOT_ACCEPTED. Read the list rather than hardcoding
one, since what a project accepts is a subset of what the platform supports.List responses stay lean and omit it. name and logoUri are best-effort and may be null, so
render a fallback for both.- Get account returns
acceptedAssetson everychainAddressesentry - Supported Assets lists the assets the platform can accept
Sumsub Token Sharing decisions now arrive by webhook
Importing a Sumsub applicant share token no longer approves the user synchronously. A successful import now moves the user toIN_REVIEW.The decision, APPROVED, REJECTED, or RETRY_REQUIRED, then arrives on the same
USER_APPLICATION_STATUS_UPDATED webhook used by Managed KYC.A failed import can now leave the user at RETRY_REQUIRED as well as NOT_STARTED.- Advance the user application with the
SUMSUB_TOKEN_SHARINGmethod imports the token and moves the user toIN_REVIEW USER_APPLICATION_STATUS_UPDATEDcarries the decision- Managed KYC explains the webhook-driven review flow
- Sumsub Token Sharing covers the import flow
Choose the account owner type at creation
Creating an account now takes an explicitownerType, USER or COMPANY, instead of inferring
it from the project.It defaults to USER. ownerId is a user ID or a company ID to match. Requesting COMPANY
outside a corporate program now fails with COMPANY_ACCOUNT_NOT_ALLOWED.- Create account takes
ownerTypeand a matchingownerId - Account ownership explains user and company accounts
Fund the master collateral account by bank transfer
Get bank details returns the beneficiary name and address, the account number, the bank name and address, the SWIFT code, and the domestic bank and branch codes for wiring funds into the master collateral account, along with areference to
quote on the transfer. It applies to Program-Funded projects enabled for bank transfers.
FIAT_DEPOSITS_NOT_ENABLED means the project has not been enabled for it.See Funding via Bank Transfer.Card shipping can be disabled for a project
Submit shipment returns403 CARD_SHIPPING_NOT_ENABLED when physical card shipping is not enabled for the project.See Shipping.Company simulation rejects restricted countries
Simulate company status now rejectscountry, registeredAddress, and operationalAddress values for a country that cannot be used
for card issuance, such as KP, when simulating ACTIVE.See Getting started with KYB.Cards can be blocked and unblocked directly
You can block a card and unblock it when the block can be lifted. A block is a hard stop, separate from freezing it.blockLiftable on the card resource tells you whether unblock will work before you call it.frozen reports a freeze that a block is hiding from status.blockReason.type on a blocked card can be CLIENT_REQUESTED.- Block a card declines every attempt online, in-store, and at the ATM
- Unblock a card lifts a block you or Reap placed, when it can be lifted
- Card statuses covers how freeze and block show up in
status - Managing cards covers when to block versus freeze
Card management stays available when an account is restricted
Card operations no longer fail withACCOUNT_NOT_ACTIVE when the linked account is restricted.blockReason.type can no longer be ACCOUNT_RESTRICTED. Restriction only affects transaction
authorization, tracked on the account.- Delete a card removes a card when offboarding a user
- Freeze a card pauses spending on a card
- Unfreeze a card restores a frozen card
- Update PIN sets or changes the cardholder’s PIN
- Create reveal session returns a link that shows the card details
- Account status explains how restriction is tracked on the account
File a dispute on a cleared card transaction
You can dispute a cleared card transaction and have Reap take the case to the card network.Send the transaction ID and a reason. Reap derives the card and cardholder from the transaction, along with its currency.Some reasons need a signed statement from the cardholder before the case can move forward. Subscribe toCARD_DISPUTE_STATUS_UPDATED for the
outcome.- File dispute opens a case on a cleared transaction
- List disputes returns the cases you have filed
- Get dispute returns one case
- Mint signature link returns a link the cardholder signs when a reason needs a statement
- Disputes explains how filing and outcomes work
- Dispute reasons lists which reasons need a signed statement
Fiat deposits are now available over the API
You can read a fiat deposit credited to an account. The response includes the amount as received by the bank and the amount actually credited.Those two differ when the transfer was converted on the way in.In Program-Funded programs you can simulate a deposit in sandbox. Subscribe toFIAT_DEPOSIT_CREATED for new deposits.Fiat deposits also appear in the activity feed as FIAT_DEPOSIT.- Get fiat deposit returns a credited fiat deposit
- Simulate a fiat deposit credits a project’s master collateral account in sandbox
- List activities returns the ordered, paginated feed
The activity feed can return more than one activity type at once
type on the activity feed accepts a comma-separated list.
type=CRYPTO_DEPOSIT,CARD_TRANSACTION returns deposits and card transactions together in one
ordered, paginated feed.Every other filter narrows within its own activity type instead of restricting the feed to it.cardId=<id> alone still returns the account’s other activity alongside that card’s
transactions. Combine it with type=CARD_TRANSACTION to see the card’s transactions by
themselves.- List activities returns the ordered, paginated feed
- Reading transactions explains how the activity feed is filtered
Master deposits can be charged a deposit fee
Deposits into a master account can carry a fee, set per project and agreed with Reap. The fee comes out of the deposit.Each deposit reports what it was charged infeeAmount, in the same token as amount. A
project with no fee reports 0.Deposits into user accounts are never charged and report null.- Deposit fee explains when a master deposit is charged
Simulate an authorization with a 3DS challenge
You can run the whole challenge flow in sandbox for cards using3dsChallengeMethod: WEBHOOK.The simulation sends CARD_3DS_CHALLENGE_CREATED
without creating a transaction. Approving one creates the transaction, rejecting it does not.- Simulate 3DS authorization runs the challenge flow in sandbox
- Testing in Sandbox covers the rest of the sandbox challenge flow
Responding to a closed 3DS challenge returns a specific error
A closed challenge returns a specific error if it has already been answered or has expired.- Respond to 3DS challenge returns
400 3DS_CHALLENGE_INVALID_STATEwhen the challenge is already answered or expired
Fraud alerts can be handled through the API
Reap raises an alert on a transaction it suspects is fraudulent. You can also report a past transaction as fraud yourself.You can list alerts and fetch one, then respond to confirm or decline. Confirming an alert or reporting a transaction as fraud blocks the card and sendsCARD_STATUS_UPDATED with
blockReason.type: FRAUD_ALERT_CONFIRMED.CARD_FRAUD_ALERT_CREATED fires when an alert is
raised. CARD_FRAUD_ALERT_STATUS_UPDATED
fires when its status changes.An alert that nobody answers in time expires on its own.- Report fraud reports a past transaction as fraud
- Respond to alert confirms or declines a suspected-fraud alert
- Fraud Alerts explains how alerts work end to end