Credit Card¶
A credit card payment charges the investor's card through TransactAPI's Stripe integration and moves the funds into the offering's escrow account. The investor enters the card in a hosted form, so card numbers never pass through your systems. You then call ccFundMove against the trade. Use this page when the trade's transactionType is CREDITCARD.
Before You Start¶
- Your client must be enabled for credit card payments with Stripe as the provider. Contact North Capital to enable it and to confirm your per-transaction card limit.
- Register webhooks so you receive the payment status events.
- The investor has an approved account (
accountId) that is not blocked for card transactions. See Onboard Investors. - A trade exists for that account with
transactionTypeset toCREDITCARD, and its total is within your card limit. See Create the Trade. To switch an existingCREATEDtrade, callupdateTradeTransactionType. - Card payments and chargebacks are billed in production. See the Fee Schedule.
Steps¶
1. Link the investor's card¶
Request a secure link to the card entry form for the investor's account.
curl -X POST "$TAPI_HOST/v3/linkCreditCard" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A12345
{
"statusCode": "101",
"statusDesc": "Ok",
"accountDetails": "https://api-sandboxdash.norcapsecurities.com/admin_v3/LinkCreditCard?params=..."
}
Open the accountDetails URL for the investor, for example in a new window or an iframe. The investor enters the card there and it is saved with Stripe against the account. An account holds one card. To replace it, call updateLinkedCreditCard, which returns a form URL in the same way.
2. Confirm the card is linked¶
Check that the investor completed the form before you charge the card.
curl -X POST "$TAPI_HOST/v3/getLinkedCreditCard" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A12345
{
"statusCode": "101",
"statusDesc": "Ok",
"creditcardDetails": {
"accountId": "A12345",
"creditCardNumber": "4242",
"cardType": "Visa",
"createdDate": "2026-09-24 14:05:12"
}
}
creditCardNumber is the card's last four digits, which you can show to the investor. A 715 response means no card is linked yet.
3. Create the card payment with ccFundMove¶
Create a card payment for the trade's full amount.
curl -X POST "$TAPI_HOST/v3/ccFundMove" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d accountId=A12345 \
-d tradeId=123456789 \
-d createdIpAddress=10.0.0.1
{
"statusCode": "101",
"statusDesc": "Ok",
"transactionDetails": [
{
"accountId": "A12345",
"tradeId": "123456789",
"offeringId": "12345",
"totalAmount": "12345.000000",
"ccreferencenumber": "987654321",
"fundStatus": "Pending",
"transactionstatus": "Pending"
}
]
}
Keep ccreferencenumber. Status webhooks call it RefNum, and you need it to void the payment. To charge an amount other than the trade total, use ccFundMovement, which takes an additional amount. While a card payment for the trade is Pending or Submitted, another request returns 727.
4. Track the charge¶
The payment is approved and the card is then charged through Stripe. Approval is performed by North Capital, or happens immediately if your client is configured for real-time payments. A successful charge moves fundStatus to Submitted. A declined charge moves it to Returned, with the reason in errors. When the payment settles, the trade moves to FUNDED.
Each change sends the updateCCFundMoveStatus webhook. To check on demand, call getCCFundMoveInfo or read paymentStatus on GET /v3/trades/123456789.
If the payment is Returned, the trade stays CREATED. The investor can link a different card, and you can call ccFundMove again.
5. Void a pending payment (optional)¶
To cancel a card payment before it is processed, void it with its reference number. Only Pending payments can be voided.
curl -X POST "$TAPI_HOST/v3/requestForVoidCCTransaction" \
-H "Authorization: Bearer $TAPI_CLIENT_ID:$TAPI_API_KEY" \
-d RefNum=987654321
{
"statusCode": "101",
"statusDesc": "Ok",
"investorExternalAccountDetails": "Status Updated Successfully"
}
The payment moves to Voided and the requestForVoidCCTransaction webhook fires.
Webhooks¶
These credit card webhooks fire in this step:
ccFundMoveorccFundMovement: a card payment was created.stripePaymentProcess: the card was charged through Stripe.updateCCFundMoveStatus: the payment'sfundStatuschanged.updateCCFundMoveApprovedStatus: the payment's approval status changed.requestForVoidCCTransaction: a pending payment was voided.
When the trade becomes FUNDED, the updateTradeStatus webhook fires.
Common Errors¶
See Error Codes for the full list.
| Code | When it happens here |
|---|---|
710 | linkCreditCard was called for an account that already has a card. Use updateLinkedCreditCard. |
715 | ccFundMove was called before a card was linked. |
720 | Your client is not enabled for credit card payments, or the trade total exceeds your card limit. |
727 | The trade already has a Pending or Submitted card payment. |
769 | Your client is not configured with Stripe as its card provider. |
Next¶
When the trade is FUNDED, continue to Settle and Manage.