dime-python-sdk 1.2.0__py3-none-any.whl → 1.3.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dime_payments/config.py +1 -1
- dime_payments/data_objects/cover_fee_quote.py +48 -0
- dime_payments/data_objects/invoice.py +13 -0
- dime_payments/data_objects/invoice_payment.py +10 -1
- dime_payments/data_objects/recurring_invoice.py +4 -1
- dime_payments/http/transport.py +1 -1
- dime_payments/resources/invoices.py +18 -0
- dime_payments/resources/recurring_invoices.py +7 -0
- {dime_python_sdk-1.2.0.dist-info → dime_python_sdk-1.3.1.dist-info}/METADATA +52 -3
- {dime_python_sdk-1.2.0.dist-info → dime_python_sdk-1.3.1.dist-info}/RECORD +12 -11
- {dime_python_sdk-1.2.0.dist-info → dime_python_sdk-1.3.1.dist-info}/WHEEL +1 -1
- {dime_python_sdk-1.2.0.dist-info → dime_python_sdk-1.3.1.dist-info}/licenses/LICENSE +0 -0
dime_payments/config.py
CHANGED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
from dataclasses import dataclass
|
|
2
|
+
from typing import Any
|
|
3
|
+
|
|
4
|
+
from ..support.arr import arr_object, arr_string
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
@dataclass
|
|
8
|
+
class CoverFeeQuote:
|
|
9
|
+
"""
|
|
10
|
+
The processing fee a cover-fee invoice adds on top of what the customer pays,
|
|
11
|
+
quoted for both payment methods.
|
|
12
|
+
|
|
13
|
+
Present on an :class:`Invoice` only when ``cover_fee_required`` is true. The fee
|
|
14
|
+
is NOT a line item and is NOT part of the invoice's ``total``: the merchant is
|
|
15
|
+
owed ``total``, and the customer is charged ``total`` plus this fee. Card and
|
|
16
|
+
ACH rates differ, so the amount depends on how the customer chooses to pay —
|
|
17
|
+
``cc_total`` is the higher of the two and what the invoice and its emails lead
|
|
18
|
+
with.
|
|
19
|
+
|
|
20
|
+
``basis`` names what the quote was computed against — currently always
|
|
21
|
+
``balance``, the amount still outstanding. Paying a partial amount re-quotes the
|
|
22
|
+
fee against that amount, so treat these as a quote for settling in full today
|
|
23
|
+
rather than a fixed charge.
|
|
24
|
+
|
|
25
|
+
Money is kept as strings, consistent with the rest of the SDK, to avoid float
|
|
26
|
+
rounding.
|
|
27
|
+
"""
|
|
28
|
+
|
|
29
|
+
basis: str | None = None
|
|
30
|
+
base: str | None = None
|
|
31
|
+
cc_fee: str | None = None
|
|
32
|
+
cc_total: str | None = None
|
|
33
|
+
ach_fee: str | None = None
|
|
34
|
+
ach_total: str | None = None
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def from_dict(cls, data: dict[str, Any]) -> 'CoverFeeQuote':
|
|
38
|
+
cc = arr_object(data, 'cc')
|
|
39
|
+
ach = arr_object(data, 'ach')
|
|
40
|
+
|
|
41
|
+
return cls(
|
|
42
|
+
basis=arr_string(data, 'basis'),
|
|
43
|
+
base=arr_string(data, 'base'),
|
|
44
|
+
cc_fee=arr_string(cc, 'fee'),
|
|
45
|
+
cc_total=arr_string(cc, 'total'),
|
|
46
|
+
ach_fee=arr_string(ach, 'fee'),
|
|
47
|
+
ach_total=arr_string(ach, 'total'),
|
|
48
|
+
)
|
|
@@ -2,6 +2,7 @@ from dataclasses import dataclass, field
|
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
4
|
from ..support.arr import arr_array, arr_bool, arr_int, arr_object, arr_string
|
|
5
|
+
from .cover_fee_quote import CoverFeeQuote
|
|
5
6
|
from .invoice_customer import InvoiceCustomer
|
|
6
7
|
from .invoice_event import InvoiceEvent
|
|
7
8
|
from .invoice_payment import InvoicePayment
|
|
@@ -15,6 +16,10 @@ class Invoice:
|
|
|
15
16
|
|
|
16
17
|
Money fields arrive as dollar amounts and are kept as strings, consistent
|
|
17
18
|
with the rest of the SDK, to avoid float rounding.
|
|
19
|
+
|
|
20
|
+
When ``cover_fee_required`` is set the customer must also pay the processing
|
|
21
|
+
fee, which is reported on :attr:`cover_fee_quote` rather than included in
|
|
22
|
+
``total`` — so what settles is more than what the invoice says.
|
|
18
23
|
"""
|
|
19
24
|
|
|
20
25
|
id: int | None = None
|
|
@@ -30,6 +35,8 @@ class Invoice:
|
|
|
30
35
|
amount_paid: str | None = None
|
|
31
36
|
balance: str | None = None
|
|
32
37
|
allow_partial_payment: bool = False
|
|
38
|
+
cover_fee_required: bool = False
|
|
39
|
+
cover_fee_quote: CoverFeeQuote | None = None
|
|
33
40
|
thank_you_note: str | None = None
|
|
34
41
|
public_url: str | None = None
|
|
35
42
|
customer: InvoiceCustomer = field(default_factory=InvoiceCustomer)
|
|
@@ -53,6 +60,12 @@ class Invoice:
|
|
|
53
60
|
amount_paid=arr_string(data, 'amount_paid'),
|
|
54
61
|
balance=arr_string(data, 'balance'),
|
|
55
62
|
allow_partial_payment=arr_bool(data, 'allow_partial_payment'),
|
|
63
|
+
cover_fee_required=arr_bool(data, 'cover_fee_required'),
|
|
64
|
+
cover_fee_quote=(
|
|
65
|
+
CoverFeeQuote.from_dict(data['cover_fee_quote'])
|
|
66
|
+
if isinstance(data.get('cover_fee_quote'), dict)
|
|
67
|
+
else None
|
|
68
|
+
),
|
|
56
69
|
thank_you_note=arr_string(data, 'thank_you_note'),
|
|
57
70
|
public_url=arr_string(data, 'public_url'),
|
|
58
71
|
customer=InvoiceCustomer.from_dict(arr_object(data, 'customer')),
|
|
@@ -6,9 +6,17 @@ from ..support.arr import arr_int, arr_string
|
|
|
6
6
|
|
|
7
7
|
@dataclass
|
|
8
8
|
class InvoicePayment:
|
|
9
|
-
"""
|
|
9
|
+
"""
|
|
10
|
+
A payment recorded against an invoice.
|
|
11
|
+
|
|
12
|
+
``amount`` is what was credited to the invoice; ``cover_fee`` is the processing
|
|
13
|
+
fee charged on top of it, so ``amount + cover_fee`` is what the customer
|
|
14
|
+
actually paid. It is zero unless the invoice required the customer to cover
|
|
15
|
+
fees.
|
|
16
|
+
"""
|
|
10
17
|
|
|
11
18
|
amount: str | None = None
|
|
19
|
+
cover_fee: str | None = None
|
|
12
20
|
paid_at: str | None = None
|
|
13
21
|
method: str | None = None
|
|
14
22
|
transaction_id: int | None = None
|
|
@@ -17,6 +25,7 @@ class InvoicePayment:
|
|
|
17
25
|
def from_dict(cls, data: dict[str, Any]) -> 'InvoicePayment':
|
|
18
26
|
return cls(
|
|
19
27
|
amount=arr_string(data, 'amount'),
|
|
28
|
+
cover_fee=arr_string(data, 'cover_fee'),
|
|
20
29
|
paid_at=arr_string(data, 'paid_at'),
|
|
21
30
|
method=arr_string(data, 'method'),
|
|
22
31
|
transaction_id=arr_int(data, 'transaction_id'),
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
from dataclasses import dataclass, field
|
|
2
2
|
from typing import Any
|
|
3
3
|
|
|
4
|
-
from ..support.arr import arr_array, arr_int, arr_object, arr_string
|
|
4
|
+
from ..support.arr import arr_array, arr_bool, arr_int, arr_object, arr_string
|
|
5
5
|
from .invoice_customer import InvoiceCustomer
|
|
6
6
|
from .line_item import LineItem
|
|
7
7
|
|
|
@@ -38,6 +38,8 @@ class RecurringInvoice:
|
|
|
38
38
|
status: str | None = None
|
|
39
39
|
recurrence_schedule: str | None = None
|
|
40
40
|
payment_terms: str | None = None
|
|
41
|
+
# Copied onto every invoice this template generates.
|
|
42
|
+
cover_fee_required: bool = False
|
|
41
43
|
start_date: str | None = None
|
|
42
44
|
end_date: str | None = None
|
|
43
45
|
next_run_date: str | None = None
|
|
@@ -55,6 +57,7 @@ class RecurringInvoice:
|
|
|
55
57
|
status=arr_string(data, 'status'),
|
|
56
58
|
recurrence_schedule=arr_string(data, 'recurrence_schedule'),
|
|
57
59
|
payment_terms=arr_string(data, 'payment_terms'),
|
|
60
|
+
cover_fee_required=arr_bool(data, 'cover_fee_required'),
|
|
58
61
|
start_date=arr_string(data, 'start_date'),
|
|
59
62
|
end_date=arr_string(data, 'end_date'),
|
|
60
63
|
next_run_date=arr_string(data, 'next_run_date'),
|
dime_payments/http/transport.py
CHANGED
|
@@ -25,6 +25,12 @@ class Invoices(AbstractResource):
|
|
|
25
25
|
"""
|
|
26
26
|
|
|
27
27
|
def list(self, sid: str, filters: dict[str, Any] | None = None) -> CursorPage[Invoice]:
|
|
28
|
+
"""
|
|
29
|
+
List invoices for a merchant.
|
|
30
|
+
|
|
31
|
+
``filters['status']`` is one of draft, sent, viewed, partially_paid, paid, void,
|
|
32
|
+
refunded, overdue or all.
|
|
33
|
+
"""
|
|
28
34
|
body = self._envelope({'sid': sid}, filters or {})
|
|
29
35
|
return self._paginate('GET', 'invoices', body, Invoice.from_dict)
|
|
30
36
|
|
|
@@ -39,6 +45,12 @@ class Invoices(AbstractResource):
|
|
|
39
45
|
``customer_name``, ``customer_email``, ``payment_terms``
|
|
40
46
|
(``due_on_receipt`` | ``net_15`` | ``net_30`` | ``net_60``) and at least
|
|
41
47
|
one entry in ``lines``, each referencing a Merchant ``item_id``.
|
|
48
|
+
|
|
49
|
+
Pass ``cover_fee_required`` to make the customer pay the processing fee. The
|
|
50
|
+
fee is added on top of the invoice at payment time rather than becoming a
|
|
51
|
+
line item, so ``total`` stays the amount owed to the merchant — read
|
|
52
|
+
:attr:`Invoice.cover_fee_quote` for what the customer will actually be
|
|
53
|
+
charged. Omit it to inherit the Merchant's invoice setting.
|
|
42
54
|
"""
|
|
43
55
|
body = self._envelope({'sid': sid} | attributes)
|
|
44
56
|
raw = self._transport.request('POST', 'invoice/create', body)
|
|
@@ -86,6 +98,12 @@ class Invoices(AbstractResource):
|
|
|
86
98
|
``expiration_date``; for ACH, pass ``routing_number`` /
|
|
87
99
|
``account_number`` / ``account_type`` / ``account_name``. Omit ``amount``
|
|
88
100
|
to pay the full balance.
|
|
101
|
+
|
|
102
|
+
On a cover-fee invoice the processing fee for ``payment_type`` is charged on
|
|
103
|
+
top of ``amount``, so the card or bank account is debited more than the
|
|
104
|
+
invoice is credited. The fee lands as ``cover_fee`` on the matching entry in
|
|
105
|
+
:attr:`Invoice.payments`. Card and ACH rates differ, so the same ``amount``
|
|
106
|
+
settles differently per ``payment_type``.
|
|
89
107
|
"""
|
|
90
108
|
body = self._envelope({'sid': sid, 'invoice_id': invoice_id} | attributes)
|
|
91
109
|
raw = self._transport.request('POST', 'invoice/pay', body)
|
|
@@ -18,6 +18,13 @@ class RecurringInvoices(AbstractResource):
|
|
|
18
18
|
return RecurringInvoice.from_dict(raw.get('data') or {})
|
|
19
19
|
|
|
20
20
|
def create(self, sid: str, attributes: dict[str, Any]) -> RecurringInvoice:
|
|
21
|
+
"""
|
|
22
|
+
Create a recurring-invoice template. When ``recurring_start_date`` is today
|
|
23
|
+
the first invoice is generated and sent immediately.
|
|
24
|
+
|
|
25
|
+
``cover_fee_required`` makes the customer cover the processing fee on every
|
|
26
|
+
invoice this template generates.
|
|
27
|
+
"""
|
|
21
28
|
body = self._envelope({'sid': sid} | attributes)
|
|
22
29
|
raw = self._transport.request('POST', 'recurring-invoice/create', body)
|
|
23
30
|
return RecurringInvoice.from_dict(raw.get('data') or {})
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: dime-python-sdk
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.3.1
|
|
4
4
|
Summary: Python client for the Dime Payments API
|
|
5
5
|
Author: Dime Technology
|
|
6
6
|
License: MIT License
|
|
@@ -218,6 +218,11 @@ item (a fund or designation). Draft invoices can be edited; once sent they are l
|
|
|
218
218
|
Identify the customer with `customer_uuid` — the same uuid every other resource uses, and the only
|
|
219
219
|
identifier the customer endpoints return. `customer_id` is still accepted for older integrations.
|
|
220
220
|
|
|
221
|
+
**Statuses.** `invoice.status` is one of `draft`, `sent`, `viewed`, `partially_paid`, `paid`, `void` or
|
|
222
|
+
`refunded`. `paid` is not always final: if the customer's bank returns an ACH payment, the invoice is
|
|
223
|
+
reopened (back to `partially_paid`, `viewed` or `sent`, with `amount_paid` and `balance` updated) and an
|
|
224
|
+
`invoice_payment_returned` webhook fires. Re-read the invoice rather than caching a `paid` status forever.
|
|
225
|
+
|
|
221
226
|
```python
|
|
222
227
|
# Look up (or create) the merchant items a line can reference
|
|
223
228
|
items = dime.invoices.list_items('000010')
|
|
@@ -267,9 +272,52 @@ dime.invoices.void('000010', invoice.id)
|
|
|
267
272
|
dime.invoices.duplicate('000010', invoice.id)
|
|
268
273
|
```
|
|
269
274
|
|
|
275
|
+
#### Making the customer cover processing fees
|
|
276
|
+
|
|
277
|
+
Set `cover_fee_required` and the customer must pay the processing fee — it is not an optional
|
|
278
|
+
checkbox at checkout. The fee is **not** a line item and is **not** part of `total`: the merchant is
|
|
279
|
+
still owed `total`, and the fee is added on top of whatever the customer pays.
|
|
280
|
+
|
|
281
|
+
Card and ACH rates differ, so the charge depends on how the customer pays. `cover_fee_quote` gives
|
|
282
|
+
you both, quoted against the outstanding balance:
|
|
283
|
+
|
|
284
|
+
```python
|
|
285
|
+
invoice = dime.invoices.create('000010', {
|
|
286
|
+
'customer_uuid': customer.uuid,
|
|
287
|
+
'customer_name': 'Jane Doe',
|
|
288
|
+
'customer_email': 'jane@example.com',
|
|
289
|
+
'payment_terms': 'net_15',
|
|
290
|
+
'cover_fee_required': True, # omit to inherit the merchant's invoice setting
|
|
291
|
+
'lines': [
|
|
292
|
+
{'item_id': item.id, 'name': 'Consulting', 'quantity': 1, 'unit_price': 100},
|
|
293
|
+
],
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
invoice.total # '100.00' — what the merchant is owed
|
|
297
|
+
invoice.cover_fee_quote.cc_total # '104.32' — charged if they pay by card
|
|
298
|
+
invoice.cover_fee_quote.ach_total # '101.26' — charged if they pay by bank
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
The card figure is the higher of the two and is what the invoice and its emails lead with. A partial
|
|
302
|
+
payment re-quotes the fee against the partial amount, so treat the quote as "settling in full today"
|
|
303
|
+
rather than a fixed charge. `cover_fee_quote` is `None` when no fee is required.
|
|
304
|
+
|
|
305
|
+
To reconcile a payment, `amount` was credited to the invoice and `cover_fee` was charged on top:
|
|
306
|
+
|
|
307
|
+
```python
|
|
308
|
+
payment = invoice.payments[0]
|
|
309
|
+
payment.amount # '100.00' — applied to the balance
|
|
310
|
+
payment.cover_fee # '4.32' — the fee the customer also paid
|
|
311
|
+
# The customer was charged amount + cover_fee.
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
`pay()` behaves the same way: the fee for the `payment_type` you pass is added to `amount`, so the
|
|
315
|
+
card or bank account is debited more than the invoice is credited.
|
|
316
|
+
|
|
270
317
|
### Recurring invoices
|
|
271
318
|
|
|
272
|
-
Templates that emit an invoice on a schedule.
|
|
319
|
+
Templates that emit an invoice on a schedule. `cover_fee_required` is copied onto every invoice a
|
|
320
|
+
template generates.
|
|
273
321
|
|
|
274
322
|
```python
|
|
275
323
|
ri = dime.recurring_invoices.create('000010', {
|
|
@@ -277,6 +325,7 @@ ri = dime.recurring_invoices.create('000010', {
|
|
|
277
325
|
'payment_terms': 'net_30',
|
|
278
326
|
'recurring_frequency': 'Monthly', # Weekly | Biweekly | FirstFifteenth | Monthly | Yearly
|
|
279
327
|
'recurring_start_date': '2026-09-01',
|
|
328
|
+
'cover_fee_required': True, # optional
|
|
280
329
|
'lines': [
|
|
281
330
|
{'item_id': item.id, 'name': 'Retainer', 'quantity': 1, 'unit_price': 500},
|
|
282
331
|
],
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
dime_payments/__init__.py,sha256=nJGtKtehbZMxar3wgdk8RIG_nNPSb6G9rmMyC2PnjqM,638
|
|
2
2
|
dime_payments/client.py,sha256=dX_mH2q_hBZrC2s8B3Y3EYy3AWAvUYgTDNf1M0i9aFM,1328
|
|
3
|
-
dime_payments/config.py,sha256=
|
|
3
|
+
dime_payments/config.py,sha256=v9v2TmbjnDo-80IPhI5cMplEoIvkP5Tnyhp5JGjPXmQ,847
|
|
4
4
|
dime_payments/data_objects/__init__.py,sha256=fuavK4aZ-IFM_PyMpJ8fIZlip7-V5m5LOHTCr2XnZng,1409
|
|
5
5
|
dime_payments/data_objects/address.py,sha256=ocnxRM3JDLr4mDtlnVgsnUb6Hy5u6vNQlWVRFHzuMIw,950
|
|
6
|
+
dime_payments/data_objects/cover_fee_quote.py,sha256=KuS1GMVe-Stixate6crTswvvhnq8e9Jfq3v4C2pRYr0,1717
|
|
6
7
|
dime_payments/data_objects/customer.py,sha256=fSUPB9PynX_R3Jntnjr130ExeZtgrmRZSVfds54rmV0,1141
|
|
7
8
|
dime_payments/data_objects/deposit.py,sha256=b0rQdNgdprMtP0pdMrepsWG3jBt7fJ4FGZ1EuHTRQhA,1139
|
|
8
9
|
dime_payments/data_objects/deposit_group.py,sha256=kmfwnDO0YgmvmlSvIakb4cMFYOMfYDDnXMR4eiabSKA,813
|
|
9
10
|
dime_payments/data_objects/deposit_with_transactions.py,sha256=HjmWB5v2R67z5xgqoZt1rlV5nxvixrTmySS-zzUFA0c,1420
|
|
10
11
|
dime_payments/data_objects/form_link.py,sha256=rPU7cJynsrfb_1QjT8DkZ8ShvXVXUScBqJNZVASeJCI,280
|
|
11
|
-
dime_payments/data_objects/invoice.py,sha256=
|
|
12
|
+
dime_payments/data_objects/invoice.py,sha256=GQ6g-9e4toNsgJF-2WsnJ0S3mgeizrtYbBYhI3ur46E,3251
|
|
12
13
|
dime_payments/data_objects/invoice_customer.py,sha256=GtnomaFO8xlpRuElMPPAAtlT5DwJLyp3NB5wGqdW9Bc,528
|
|
13
14
|
dime_payments/data_objects/invoice_event.py,sha256=dvKOfcB9sxE6ehFQyB_lsfpA6iMFX3oK5WAUjSIpgDk,646
|
|
14
15
|
dime_payments/data_objects/invoice_item.py,sha256=aVgO0UM7vqJB2VjvtYMBpLsCWXKHus0r7pA9I7UHwxo,856
|
|
15
16
|
dime_payments/data_objects/invoice_link.py,sha256=kiWSXkl4jtsCZ-ODsEaFU12mTk3soe0qZ7ICDJ2MiEE,452
|
|
16
|
-
dime_payments/data_objects/invoice_payment.py,sha256=
|
|
17
|
+
dime_payments/data_objects/invoice_payment.py,sha256=EPvs8FhhDyxEyRo8RoiVSRZK5LIBEwF5Iwjcw7DM0Ac,983
|
|
17
18
|
dime_payments/data_objects/line_item.py,sha256=EJtpxnSOoCOlZJcrq8jDarieICPHtQK-g6jipTDMDAg,1024
|
|
18
19
|
dime_payments/data_objects/merchant.py,sha256=U6RbP3QJACjOtrSExyodfz9zOzeU2hThXwGD6M0XATI,1900
|
|
19
20
|
dime_payments/data_objects/message_result.py,sha256=2gZYbokwPRdlBUz_vGgYzrJpxMnjMuzwtTdjXhUv1GM,299
|
|
20
21
|
dime_payments/data_objects/payment_method.py,sha256=-3kcHBGoXD12mzHocMoKU0aBwoNJ_9GJFx5eldXUJxA,2460
|
|
21
|
-
dime_payments/data_objects/recurring_invoice.py,sha256=
|
|
22
|
+
dime_payments/data_objects/recurring_invoice.py,sha256=pS4DEZdMnxhA6qwcM3bUH7k-yb0NU8-OvJdrk_cdihA,2785
|
|
22
23
|
dime_payments/data_objects/recurring_payment.py,sha256=E6F3oX6aqWeE2Ek4ePqDDbZ79APdIKKXVip4bTcFU-g,2209
|
|
23
24
|
dime_payments/data_objects/recurring_payment_method.py,sha256=P22ITvvxAUJ4NaEc7MH2ItCFm6wk1mEuxRs4ffSUDrg,402
|
|
24
25
|
dime_payments/data_objects/tokenize_result.py,sha256=i27Hc0A-dFM8cX8s9A71yM95kd48ih25fvnb3SEml54,295
|
|
@@ -36,7 +37,7 @@ dime_payments/exceptions/server_exception.py,sha256=SCUubaM1wTwFMW3E9mBSxry4A-0Q
|
|
|
36
37
|
dime_payments/exceptions/validation_exception.py,sha256=_HGMPN-5iFq6RWJY-06Oaak565MeD-yRf6GnbXp7Sog,689
|
|
37
38
|
dime_payments/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
39
|
dime_payments/http/error_handler.py,sha256=dqClsyDIcCPS6CtiqtGvEwTnORj24m2muXThXfHdhX0,2873
|
|
39
|
-
dime_payments/http/transport.py,sha256=
|
|
40
|
+
dime_payments/http/transport.py,sha256=WkmSUgGbBPDHxuulejsflOE3awwzVhFahMgvXqHYznU,2642
|
|
40
41
|
dime_payments/pagination/__init__.py,sha256=J2k8htn29Nu92KQh4wtEeN0StyMc8cWxVY8jQydF-dQ,62
|
|
41
42
|
dime_payments/pagination/cursor_page.py,sha256=Xpbt33ceBy_HQlqe3wFbxA93bUfx3rHcqXfhVAkOQJ0,2263
|
|
42
43
|
dime_payments/resources/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -44,15 +45,15 @@ dime_payments/resources/abstract_resource.py,sha256=-XmnqJvk2tVNe44JeY_TTAzD4UiU
|
|
|
44
45
|
dime_payments/resources/addresses.py,sha256=sg0q3YCnkdGlGM0onbBh_UsatrIu4VyzAA1BdZ1QRZ0,1713
|
|
45
46
|
dime_payments/resources/customers.py,sha256=6_9gG9tc2uHN-onhzNFP0NO67NxGOYqbwZmF96vU4bo,1545
|
|
46
47
|
dime_payments/resources/deposits.py,sha256=k8wE7kT_baHjXmXxzN9v6_2BqDb0GSUlINPRVtjmyUI,1213
|
|
47
|
-
dime_payments/resources/invoices.py,sha256=
|
|
48
|
+
dime_payments/resources/invoices.py,sha256=NOgfRP8q0BuRhGAl1w_0Cz0qNlJfgByK7g1SHJQ3Z0w,8027
|
|
48
49
|
dime_payments/resources/merchants.py,sha256=blVx7JIAps9ktdpLjjQofEnVkK_KgXOQP8beBPkHrkg,1370
|
|
49
50
|
dime_payments/resources/payment_methods.py,sha256=KJWryjnZadyohG1r6pmULjwPIjPIjScSK7ekQYamvYA,1775
|
|
50
|
-
dime_payments/resources/recurring_invoices.py,sha256=
|
|
51
|
+
dime_payments/resources/recurring_invoices.py,sha256=gJ4sNPvxv4qyNppsGZnW_orOfEVw4ROTa6yrN71Ax4g,1726
|
|
51
52
|
dime_payments/resources/recurring_payments.py,sha256=DPihjc-C7oLLfPrP5UveNpEKHmUxayv4k3hFpguJ35c,2940
|
|
52
53
|
dime_payments/resources/transactions.py,sha256=Q0VwYDicdGuM1WQXqxPX_KS313A0KZVCeuVCyKS_G7k,2742
|
|
53
54
|
dime_payments/support/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
54
55
|
dime_payments/support/arr.py,sha256=_mboi_q3HGn_Sx_MgU2exkbl-fnP2gdDY8yeSC8hkNc,1722
|
|
55
|
-
dime_python_sdk-1.
|
|
56
|
-
dime_python_sdk-1.
|
|
57
|
-
dime_python_sdk-1.
|
|
58
|
-
dime_python_sdk-1.
|
|
56
|
+
dime_python_sdk-1.3.1.dist-info/METADATA,sha256=Dd-xsvQGvO0ORUA2dK8EVYbdmrFT2qJrouHEKSqSNFs,15122
|
|
57
|
+
dime_python_sdk-1.3.1.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
|
|
58
|
+
dime_python_sdk-1.3.1.dist-info/licenses/LICENSE,sha256=-Xc5dLgfuFLVQLsSKNYmJKtNZCUU1_9ErffdGiwH-DU,1072
|
|
59
|
+
dime_python_sdk-1.3.1.dist-info/RECORD,,
|
|
File without changes
|